﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.LightSwitch;
namespace LightSwitchApplication
{

    public partial class DettaglioDocumento
    {
        partial void TotaleRiga_Compute(ref decimal result)
        {
            // Set result to the desired field value
            result = PrezzoUnitario * Quantità;
        }

        /// <summary>
        /// Riepilogo costi vari
        /// Tipologia - 0 - riferito lotto
        /// Tipologia - 1 - riferito pezzo
        /// </summary>
        /// <param name="result"></param>
        partial void TotaleCostiVari_Compute(ref decimal result)
        {
            var art = Articolo;
            if (Articolo == null) return;

            var nPezzi = Quantità;

            foreach (var d in Articolo.DettagliCostiGenerici)
            {
                if (d.TipologiaImporto == 0)
                    result += d.Importo;

                else if (d.TipologiaImporto == 1)
                    result += d.Importo * nPezzi;
            }
        }

        partial void TotaleManodopera_Compute(ref decimal result)
        {
            foreach (var d in DettagliLavorazione)
            {
                var cMinuto = d.Lavorazione.CostoOrario / 60;
                var minuti = (d.Ore * 60) + d.Minuti;

                result += cMinuto * minuti;
            }
        }

        partial void TotaleMateriale_Compute(ref decimal result)
        {
            var art = Articolo;
            if (art == null) return;

            foreach (var d in art.DettagliMaterialeArticolo)
            {
                result += d.PrezzoCad * Quantità;
            }
        }

        partial void TotaleCosto_Compute(ref decimal result)
        {
            result += TotaleCostiVari + TotaleManodopera + TotaleMateriale;
        }

        partial void MaterialeCad_Compute(ref decimal result)
        {
            if (Quantità == 0) return;
            result = TotaleMateriale / Quantità;
        }

        partial void CostiVariCad_Compute(ref decimal result)
        {
            if (Quantità == 0) return;
            result = TotaleCostiVari / Quantità;
        }

        partial void ManodoperaCad_Compute(ref decimal result)
        {
            if (Quantità == 0) return;
            result = TotaleManodopera / Quantità;
        }
    }
}
